package com.zg.api.domain.convert;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zg.api.domain.vo.ApiCategoryVo;
import com.zg.common.core.dao.apis.entity.ApiCategory;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * <p>Description: </p>
 *
 * @author zhanfeng.liang
 * @since 2025/7/9 18:15
 */
@Mapper(componentModel = "spring")
public interface ApiCategoryConvert {

    ApiCategoryVo toVo(ApiCategory apiService);

    ApiCategory toEntity(ApiCategoryVo apiService);

    List<ApiCategoryVo> toVoList(List<ApiCategory> users);

    // 带分页的列表转换
//    default Page<ApiCategoryVo> toVoPage(Page<ApiCategory> userPage) {
//        // 使用 Page 的 convert 方法
//        Page<ApiCategoryVo> voPage = new Page<>(userPage.getCurrent(), userPage.getSize());
//        voPage.setRecords(userPage.getRecords().stream()
//                .map(this::toVo)
//                .collect(Collectors.toList()));
//        voPage.setTotal(userPage.getTotal());
//        return voPage;
//    }

    default IPage<ApiCategoryVo> toVoPage(Page<ApiCategory> userPage) {
        // 使用 Page 的 convert 方法

        return userPage.convert(this::toVo);
    }
//    default IPage<ApiCategory> toEntityPage(Page<ApiCategoryVo> userPage) {
//        // 使用 Page 的 convert 方法
//
//        return userPage.convert(this::toEntity);
//    }
}
